package cn.lingyangwl.agile.infra.common;

import cn.lingyangwl.agile.model.constants.ValidationCons;
import com.alibaba.fastjson2.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import javax.validation.constraints.NotEmpty;
import java.util.Optional;

/**
 * 扫码场景信息
 * @author shenguangyang
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class ScanScene {
    public static final String SCENE_CODE = "code";
    public static final String LOGIN_ID = "loginId";
    public static final String USER_ID = "userId";
    public static final String QR_CODE_ID = "qrCodeId";

    /**
     * @see QrCodeSceneEnum
     */
    @NotEmpty(message = ValidationCons.NOT_EMPTY)
    private String sceneCode;

    /**
     * 是否立即刷新配置
     */
    private Boolean isRefresh = Boolean.FALSE;

    /**
     * 是否为临时二维码票据
     */
    private Boolean isTmpTicket = Boolean.FALSE;

    /**
     * 该二维码有效时间，以秒为单位。 最大不超过2592000（即30天），此字段如果不填，则默认有效期为30秒
     * 只有 {@link #isTmpTicket} 为true时候, 才有效
     */
    private Integer expireSeconds = 60;

    /**
     * 扩展参数
     */
    private JSONObject params;

    public JSONObject getParams() {
        return Optional.ofNullable(params).orElse(new JSONObject());
    }
}
